home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 3.1 KB | 137 lines |
- 10 ' ********************
- 20 ' ** CLOCK **
- 30 ' ********************
- 40 '
- 50 CLEAR
- 60 SCREEN 2
- 70 CLS
- 80 KEY OFF
- 90 DIM NUM(6)
- 100 XCENT = 319
- 110 YCENT = 99
- 120 PI = 3.14159
- 130 DEF FNANG(TIME) = PI / 2 - PI * TIME / 30 - 2 * PI * (TIME > 15)
- 140 LINE (120,20)-(519,178),1,BF ' draw big white box
- 150 LINE (XCENT,0)-(0,YCENT),0 ' slice off four corners
- 160 LINE (XCENT,0)-(639,YCENT),0
- 170 LINE (XCENT,199)-(0,YCENT),0
- 180 LINE (XCENT,199)-(639,YCENT),0
- 190 PAINT (126,20),0 ' paint out four corners
- 200 PAINT (512,175),0
- 210 PAINT (512,20),0
- 220 PAINT (126,175),0
- 230 RADIUS = 179
- 240 CIRCLE (XCENT,YCENT),RADIUS,0 ' draw dark circle inside
- 250 PAINT (XCENT,YCENT),0 ' darken entire circle
- 260 FOR D = 1 TO 12 ' put numbers on clock face
- 270 GOSUB 800
- 280 XD = XCENT + 165 * COS(FNANG(D*5)) - 11 + 3 * (D > 9)
- 290 YD = YCENT - 68 * SIN(FNANG(D*5)) - 3
- 300 PUT (XD,YD),NUM
- 310 NEXT D
- 320 LOCATE 1,1
- 330 PRINT "F1. Increment hour";
- 340 LOCATE 2,1
- 350 PRINT "F3. Increment minute";
- 360 LOCATE 3,1
- 370 PRINT "F5. Increment second";
- 380 LOCATE 1,61
- 390 PRINT "F2. Decrement hour";
- 400 LOCATE 2,61
- 410 PRINT "F4. Decrement minute";
- 420 LOCATE 3,61
- 430 PRINT "F6. Decrement second";
- 440 ON KEY(1) GOSUB 860
- 450 ON KEY(2) GOSUB 920
- 460 ON KEY(3) GOSUB 980
- 470 ON KEY(4) GOSUB 1040
- 480 ON KEY(5) GOSUB 1100
- 490 ON KEY(6) GOSUB 1160
- 500 KEY(1) ON
- 510 KEY(2) ON
- 520 KEY(3) ON
- 530 KEY(4) ON
- 540 KEY(5) ON
- 550 KEY(6) ON
- 560 '
- 570 WHILE NOT YET.TO.THE.END.OF.ALL.TIME....
- 580 WHILE T$ = TIME$
- 590 WEND
- 600 T$ = TIME$
- 610 SECOND2 = SECOND
- 620 MINUTE2 = MINUTE
- 630 HOUR2 = HOUR
- 640 SECOND = VAL(RIGHT$(T$,2))
- 650 MINUTE = VAL(MID$(T$,4))
- 660 HOUR = (VAL(LEFT$(T$,2)) MOD 12) * 5 + MINUTE / 12
- 670 LOCATE 24,37
- 680 PRINT T$;
- 690 CIRCLE (XCENT,YCENT),140,1,-FNANG(SECOND),-FNANG(SECOND)
- 700 CIRCLE (XCENT,YCENT),140,0,-FNANG(SECOND2),-FNANG(SECOND2)
- 710 IF MINUTE2 = MINUTE THEN 730
- 720 CIRCLE (XCENT,YCENT),120,0,-FNANG(MINUTE2),-FNANG(MINUTE2)
- 730 CIRCLE (XCENT,YCENT),120,1,-FNANG(MINUTE),-FNANG(MINUTE)
- 740 IF HOUR2 = HOUR THEN 760
- 750 CIRCLE (XCENT,YCENT),70,0,-FNANG(HOUR2),-FNANG(HOUR2)
- 760 CIRCLE (XCENT,YCENT),70,1,-FNANG(HOUR),-FNANG(HOUR)
- 770 WEND
- 780 '
- 790 ' Subroutine, get a number for putting anywhere
- 800 LOCATE 1,1
- 810 PRINT D;
- 820 GET (0,0)-(22,6),NUM
- 830 LINE (0,0)-(22,6),0,BF
- 840 RETURN
- 850 '
- 860 ' Key 1 subroutine
- 870 GOSUB 1230
- 880 H = (H + 1) MOD 24
- 890 GOSUB 1290
- 900 RETURN
- 910 '
- 920 ' Key 2 subroutine
- 930 GOSUB 1230
- 940 H = (H + 23) MOD 24
- 950 GOSUB 1290
- 960 RETURN
- 970 '
- 980 ' Key 3 subroutine
- 990 GOSUB 1230
- 1000 M = (M + 1) MOD 60
- 1010 GOSUB 1290
- 1020 RETURN
- 1030 '
- 1040 ' Key 4 subroutine
- 1050 TEMP$ = MID$(STR$((VAL(MID$(TIME$,4))+59)MOD 60),2)
- 1060 M = (M + 59) MOD 60
- 1070 GOSUB 1290
- 1080 RETURN
- 1090 '
- 1100 ' Key 5 subroutine
- 1110 GOSUB 1230
- 1120 S = (S + 1) MOD 60
- 1130 GOSUB 1290
- 1140 RETURN
- 1150 '
- 1160 ' Key 6 subroutine
- 1170 GOSUB 1230
- 1180 S = (S + 59) MOD 60
- 1190 GOSUB 1290
- 1200 RETURN
- 1210 '
- 1220 ' Subroutine, convert TIME$ into H,M,S
- 1230 H = VAL(LEFT$(TIME$,2))
- 1240 M = VAL(MID$(TIME$,4))
- 1250 S = VAL(RIGHT$(TIME$,2))
- 1260 RETURN
- 1270 '
- 1280 ' Subroutine, format H,M,S for input to TIME$
- 1290 CLOCK$ = MID$(STR$(S),2)
- 1300 IF S < 10 THEN CLOCK$ = "0" + CLOCK$
- 1310 CLOCK$ = MID$(STR$(M),2) + ":" + CLOCK$
- 1320 IF M < 10 THEN CLOCK$ = "0" + CLOCK$
- 1330 CLOCK$ = MID$(STR$(H),2) + ":" + CLOCK$
- 1340 IF H < 10 THEN CLOCK$ = "0" + CLOCK$
- 1350 TIME$ = CLOCK$
- 1360 RETURN
-